<?php
/**
 * PrynLib
 * @copyright 2007-2009 Prynel
 * @author Olivier ROGER <roger.olivier@gmail.com>
 * @category libPrynel
 * @package Log
 * @version $Revision: 104 $
 */

/**
 *
 * @package Log
 * @subpackage Log_Writer
 * @abstract 
 * @version 1.0.0 
 * @author Olivier ROGER <roger.olivier@gmail.com>
 * @copyright  2007-2009 Prynel
 *       
 */
abstract class Log_Writer_Abstract
{
	const INFO 		= 'info';
	const WARN 		= 'warn';
	const ERROR		= 'error';
	const CRITICAL 	= 'critical';
	const DEBUG 	= 'debug';
	const MODE_MINI = 0; // Uniquement le message
	const MODE_FULL = 1; // Lvl,date,message
	const DAILY		= 1;
	const MONTHLY	= 2;
	
	/**
	 * Durée des fichiers logs
	 *
	 * @var int
	 * @access protected
	 */
	protected $duree 	= self::MONTHLY;
	
	/**
	 * Type des messages
	 * mini = juste le message , full ) message + date + level
	 * @var int
	 * @access protected
	 */
	protected $mode 	= self::MODE_FULL;
	
	/**
	 * Ecriture du message
	 *
	 * @param string $message
	 * @param int $level
	 * @access public
	 */
	public function write($message,$level=self::INFO)
	{
		$this->_write($message,$level);
	}
	
	/**
	 * Défini la durée des fichiers de logs
	 *
	 * @param int $duree
	 */
	public function setDuration($duree)
	{
		$this->duree = intval($duree);
	}
	
	/**
	 * Défini le mode de message
	 *
	 * @param int $mode
	 */
	public function setMode($mode)
	{
		$this->mode = intval($mode);
	}
	
	/**
	 * Défini le préfixe des fichiers
	 *
	 * @return string
	 */
	protected function getPrefixe()
	{
		if($this->duree == self::DAILY)
			return date("d-m-Y").'_';
		elseif($this->duree == self::MONTHLY)
			return date("m-Y").'_';
		else
			return '';
	}
	
	abstract protected function _write($message,$level);
}
 ?>